Файл: CompareDirs.txt

Дата: 10.04.2014

1: * Сравнение двух каталогов 
2: * Программа КОНЦЕПТ, 27.02.2011-16.03.2011, www.gendoc.ru
3:
4: присвоить каталог1 C:\vdv\Concept_del  
5: присвоить каталог2 C:\vdv\Concept
6:
7: время таймер
8:
9: функция Соблюдается_хронология время1 время2
10: память локальный рез дата_1 дата_2 время_1 время_2 успешно дней
11:
12: присвоить рез 0
13: если [время1] != [время2]
14:   строка сопоставить успешно [время1] "[?дата_1]; ;[?время_1]"
15:   строка сопоставить успешно [время2] "[?дата_2]; ;[?время_2]"
16:   время разностьДат дней [дата_2] [дата_1]
17:   если [дней] > 0
18:     присвоить рез 1
19:   иначе
20:     если [дней] < 0
21:       присвоить рез -1
22:     иначе
23:       память локальный ч м с в1 в2
24:       строка сопоставить успешно [время_1] "[?ч];:;[?м];:;[?с]"
25:       вычислить + в1 (вычислить * $результат [ч] 3600 ) (вычислить * $результат [м] 60 ) [с]  
26:       строка сопоставить успешно [время_2] "[?ч];:;[?м];:;[?с]"
27:       вычислить + в2 (вычислить * $результат [ч] 3600 ) (вычислить * $результат [м] 60 ) [с]  
28:       если [в1] < [в2]
29:         присвоить рез 1
30:       иначе    
31:         если [в1] > [в2]
32:           присвоить рез -1
33:         конец
34:       конец
35:     конец
36:   конец  
37: конец
38: присвоить $результат [рез]
39: возврат
40:
41: функция Объекты_по_свойству имя_свойства значение_свойства
42: память локальный рез объект успешно
43: присвоить рез {}
44: для (факт понятие $результат [значение_свойства] )
45:   список сопоставить успешно (факт взять $результат [$ОбъектЦикла] ) "p;[?объект];[имя_свойства];[значение_свойства]"
46:   если [успешно]
47:     множество или рез $ [объект]
48:   конец
49: следующий
50: присвоить $результат [рез]
51: возврат
52:
53: функция Печать_информации_о_файле объект
54: память локальный объект1
55:   понятие свойства объект1 [объект]
56:   если (память существует $результат 'объект1;новее' )
57:     если [объект1;новее] == НОВЕЕ
58:       ><i>[объект1;имя файла исходное]</i> ([объект1;размер][объект1;дата]) <b>НОВЕЕ</b><br>
59:     конец
60:   иначе
61:     ><i>[объект1;имя файла исходное]</i> ([объект1;размер][объект1;дата])<br>
62:   конец
63: возврат
64:
65: строка размер каталог1_размер [каталог1]
66: увеличить каталог1_размер
67: строка размер каталог2_размер [каталог2]
68: увеличить каталог2_размер
69:
70: >*** Шаг 1.Чтение информации о каталогах в разные базы фактов
71:
72: данные использовать 1
73: импорт информацияОфайлах [каталог1] каталог1_ '*.*' full
74: понятие под каталоги1 каталог
75: данные использовать 2
76: импорт информацияОфайлах [каталог2] каталог2_ '*.*' full
77: понятие под каталоги2 каталог
78:
79: >*** Шаг 2.Удаление дублирующихся объектов-файлов
80:
81: для [каталоги1]
82:   данные использовать 1
83: *  факт сопоставитьМножество объекты1 "p;[?рез];каталог;[$ОбъектЦикла]"
84:   присвоить объекты1 (Объекты_по_свойству каталог [$ОбъектЦикла] )  
85:   для текущий_объект1 [объекты1]
86:     данные использовать 1
87:     понятие свойства объект1 [текущий_объект1]
88:     данные использовать 2
89: *    факт сопоставитьМножество объекты2 "p;[?рез];имя файла;[объект1;имя файла]"
90:     присвоить объекты2 (Объекты_по_свойству 'имя файла' [объект1;имя файла] )  
91:     для текущий_объект2 [объекты2]
92:       данные использовать 2
93:       понятие свойства объект2 [текущий_объект2]
94:       если (строка удалить $результат [объект1;каталог] 1 [каталог1_размер] ) == (строка удалить $результат [объект2;каталог] 1 [каталог2_размер] )  
95:         если [объект1;дата] == [объект2;дата]  
96:           если [объект1;размер] == [объект2;размер]
97:                     * Если одинаковые объекты-файлы, то удаляем информациюо них  
98:             данные использовать 1
99:             понятие удалить [текущий_объект1]
100:             данные использовать 2
101:             понятие удалить [текущий_объект2]  
102:           конец
103:         иначе
104:           если (Соблюдается_хронология [объект1;дата] [объект2;дата] ) > 0
105:             данные использовать 2
106:             факт добавить "p;[текущий_объект2];новее;НОВЕЕ"
107:             данные использовать 1
108:             факт добавить "p;[текущий_объект1];новее;СТАРЕЕ"
109:           иначе
110:             данные использовать 1
111:             факт добавить "p;[текущий_объект1];новее;НОВЕЕ"
112:             данные использовать 2
113:             факт добавить "p;[текущий_объект2];новее;СТАРЕЕ"
114:           конец
115:         конец
116:       конец
117:     следующий      
118:   следующий
119: следующий
120:
121: данные использовать 1
122: для [каталоги1]
123:   факт сопоставитьМножество объекты1 "p;[?рез];каталог;[$ОбъектЦикла]"
124:   если [объекты1] == {}
125:     понятие удалить [$ОбъектЦикла]
126:   конец
127: следующий
128: данные использовать 2
129: для [каталоги2]
130:   факт сопоставитьМножество объекты2 "p;[?рез];каталог;[$ОбъектЦикла]"
131:   если [объекты2] == {}
132:     понятие удалить [$ОбъектЦикла]
133:   конец
134: следующий
135:
136: данные использовать 1
137: данные сжать
138: данные использовать 2
139: данные сжать
140:
141: память очистить текущий_объект1 текущий_объект2 объекты1 объекты2 объект1 объект2
142:
143: >*** Шаг 3.Печать различий
144:
145: присвоить ВЕРСИЯ_ШАБЛОНА 1.0
146: присвоить ФАЙЛ_РЕЗУЛЬТАТ "[$ТекущийКаталог]_CompareDirs_.htm"
147: файл писать [ФАЙЛ_РЕЗУЛЬТАТ]
148:
149: ****** Начало страницы HTML ******
150:
151: ><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
152: ><html><head>
153: ><meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
154: ><LINK href="concept.css" rel="stylesheet" type="text/css">
155: ><title>Каталог ссылок</title>
156: ></head><body class="View">
157: ><h1>Различия в двух каталогах</h1>
158: ><h3>Каталог 1: [каталог1]</h3>
159: ><h3>Каталог 2: [каталог2]</h3>
160:
161: данные использовать 1
162: понятие под каталоги1 каталог
163: данные использовать 2
164: понятие под каталоги2 каталог
165:
166: * Формирование общего перечня подкаталогов
167: присвоить каталоги_короткие {}
168: для [каталоги1]
169:   множество или каталоги_короткие $ (строка удалить $результат [$ОбъектЦикла] 1 [каталог1_размер] )
170: следующий
171: для [каталоги2]
172:   множество или каталоги_короткие $ (строка удалить $результат [$ОбъектЦикла] 1 [каталог2_размер] )
173: следующий
174:
175: если [каталоги_короткие]
176:   ><table border=1>
177:   ><tr><td><b>[каталог1]</b><td><b>[каталог2]</b><td></td>
178:   для [каталоги_короткие]
179:     если [$ОбъектЦикла] == ''
180:       присвоить каталог1_длинное [каталог1]
181:       присвоить каталог2_длинное [каталог2]
182:     иначе
183:       строка сцепить каталог1_длинное [каталог1] '\' [$ОбъектЦикла]
184:       строка сцепить каталог2_длинное [каталог2] '\' [$ОбъектЦикла]
185:     конец
186:
187:     ><tr><td colspan="100%"><b>[$ОбъектЦикла]</b></td></tr>
188:
189:     данные использовать 1
190:     факт сопоставитьМножество объекты1 "p;[?рез];каталог;[каталог1_длинное]"
191:     ><tr><td>
192:     для [объекты1]
193:       Печать_информации_о_файле [$ОбъектЦикла]
194:     следующий
195:     ></td>
196:
197:     данные использовать 2
198:     факт сопоставитьМножество объекты2 "p;[?рез];каталог;[каталог2_длинное]"
199:     ><td>
200:     для [объекты2]
201:       Печать_информации_о_файле [$ОбъектЦикла]
202:     следующий
203:     ></td></tr>
204:   следующий
205:   ></table>
206: иначе  
207:   >Каталоги ОДИНАКОВЫЕ.
208: конец
209:
210: ****** Конец страницы HTML ******
211:
212: ><p><hr><font size="-1">Дата генерации: [$Сегодня] Версия шаблона: [ВЕРСИЯ_ШАБЛОНА]</font></p>
213: ></body></html>
214:
215: файл конецЗаписи
216: >Общее время выполнения: [$таймер]
217: показать html [ФАЙЛ_РЕЗУЛЬТАТ]